package fr.gla.hibtracker.historique.bm;

import java.io.Serializable;


/**
 * Identifiant composite de {@link Modification}.
 *
 */
@SuppressWarnings("serial")
public class ModificationID implements Serializable {

    private GroupeModifications<?> groupeModifications;

    private ConfigModification     configModification;



    public ModificationID() {
        super();
    }

    public ModificationID(GroupeModifications<?> groupeModifications, ConfigModification configModification) {
        super();
        this.groupeModifications = groupeModifications;
        this.configModification = configModification;
    }

    public ConfigModification getConfigModification() {
        return configModification;
    }

    public void setConfigModification(ConfigModification configModification) {
        this.configModification = configModification;
    }

    public GroupeModifications<?> getGroupeModifications() {
        return groupeModifications;
    }

    public void setGroupeModifications(GroupeModifications<?> groupeModifications) {
        this.groupeModifications = groupeModifications;
    }

    /**
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof ModificationID)) {
            return false;
        }
        ModificationID id = (ModificationID) obj;
        if (getGroupeModifications() == null || getConfigModification() == null || id == null
                        || id.getGroupeModifications() == null || id.getConfigModification() == null) {
            return false;
        } else {
            return getGroupeModifications().equals(id.getGroupeModifications())
                            && getConfigModification().equals(id.getConfigModification());
        }
    }

    /**
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        if (getGroupeModifications() == null || getConfigModification() == null) {
            return super.hashCode();
        }
        return getGroupeModifications().hashCode() + getConfigModification().hashCode();
    }
}
